package main

//闭包	概念
/*
闭包是由函数及其相关引用环境组合而成的实体
一般通过在匿名函数中引用外部函数的局部变量或包全局变量构成
		闭包 = 函数 + 引用环境
*/

//func fa(a int) func(i int) int {
//
//	return func(i int) int {
//		fmt.Println(&a, a)
//		a += i
//		return a
//	}
//}
//
//var a = 0
//
//func fa() func(i int) int {
//
//	return func(i int) int {
//		fmt.Println(&a, a)
//		a += i
//		return a
//	}
//}
//
//func main() {
//	//f := fa(1)
//	//g := fa(1)
//	f := fa()
//	g := fa()
//
//	//f,g引用的是不同的a
//	//a作全局变量是引用的是同一个a
//	fmt.Println(f(1))
//	fmt.Println(f(1))
//	fmt.Println(g(1))
//	fmt.Println(g(1))
//}
